home *** CD-ROM | disk | FTP | other *** search
- package koala.dynamicjava.interpreter;
-
- import koala.dynamicjava.classinfo.ClassFinder;
- import koala.dynamicjava.classinfo.ClassInfo;
- import koala.dynamicjava.classinfo.JavaClassInfo;
- import koala.dynamicjava.classinfo.TreeClassInfo;
- import koala.dynamicjava.interpreter.context.Context;
- import koala.dynamicjava.tree.TypeDeclaration;
- import koala.dynamicjava.util.ImportationManager;
-
- public class TreeClassFinder implements ClassFinder {
- protected Context context;
- protected Interpreter interpreter;
- protected ClassPool classPool;
-
- public Interpreter getInterpreter() {
- return this.interpreter;
- }
-
- public String getCurrentPackage() {
- return this.context.getCurrentPackage();
- }
-
- public ImportationManager getImportationManager() {
- return this.context.getImportationManager();
- }
-
- public ClassInfo lookupClass(String var1) throws ClassNotFoundException {
- if (this.classPool.contains(var1)) {
- return this.classPool.get(var1);
- } else {
- try {
- return new JavaClassInfo(this.context.lookupClass(var1, (String)null));
- } catch (TreeCompiler.PseudoError var3) {
- return var3.getClassInfo();
- }
- }
- }
-
- public ClassInfo lookupClass(String var1, ClassInfo var2) throws ClassNotFoundException {
- String var3 = var2.getName();
- if (this.classPool.contains(var1)) {
- return this.classPool.get(var1);
- } else {
- String var4 = var3 + "$" + var1;
- if (this.classPool.contains(var4)) {
- return this.classPool.get(var4);
- } else {
- try {
- return new JavaClassInfo(this.context.lookupClass(var1, var3));
- } catch (ClassNotFoundException var12) {
- ClassInfo var5 = var2.getDeclaringClass();
-
- try {
- if (var5 != null) {
- return new JavaClassInfo(this.context.lookupClass(var5.getName() + "$" + var1));
- } else {
- throw new ClassNotFoundException(var1);
- }
- } catch (ClassNotFoundException var10) {
- var5 = var2;
-
- while((var5 = var5.getSuperclass()) != null) {
- try {
- return new JavaClassInfo(this.context.lookupClass(var5.getName() + "$" + var1));
- } catch (ClassNotFoundException var8) {
- } catch (TreeCompiler.PseudoError var9) {
- return var9.getClassInfo();
- }
- }
-
- throw new ClassNotFoundException(var1);
- } catch (TreeCompiler.PseudoError var11) {
- return var11.getClassInfo();
- }
- } catch (TreeCompiler.PseudoError var13) {
- return var13.getClassInfo();
- }
- }
- }
- }
-
- public ClassInfo addClassInfo(String var1, TypeDeclaration var2) {
- return this.classPool.add(var1, new TreeClassInfo(var2, this));
- }
-
- public TreeClassFinder(Context var1, Interpreter var2, ClassPool var3) {
- this.context = var1;
- this.interpreter = var2;
- this.classPool = var3;
- }
- }
-